{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from hmlstm import HMLSTMNetwork, plot_indicators, prepare_inputs, get_text, convert_to_batches, viz_char_boundaries\n",
    "import tensorflow as tf\n",
    "\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regression example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# simulate multiresolution data\n",
    "num_signals = 300\n",
    "signal_length = 400\n",
    "x = np.linspace(0, 50 * np.pi, signal_length)\n",
    "signals = [np.random.normal(0, .5, size=signal_length) +\n",
    "           (2 * np.sin(.6 * x + np.random.random() * 10)) +\n",
    "           (5 * np.sin(.1* x + np.random.random() * 10))\n",
    "    for _ in range(num_signals)]\n",
    "\n",
    "split = int(num_signals * .8)\n",
    "train = signals[:split]\n",
    "test = signals[split:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n/wGinWhmLpSMXAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7dbded0860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# example signal\n",
    "plt.plot(x, signals[5]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "batches_in, batches_out = convert_to_batches(signals, batch_size=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tf.reset_default_graph()\n",
    "network = HMLSTMNetwork(input_size=1, task='regression', hidden_state_sizes=30,\n",
    "                       embed_size=50, out_hidden_size=30, num_layers=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loading variables...\n",
      "INFO:tensorflow:Restoring parameters from ./sinusoidal\n",
      "Epoch 0\n",
      "loss: 0.53211\n",
      "loss: 0.529624\n",
      "loss: 0.545327\n",
      "loss: 0.541836\n",
      "loss: 0.559516\n",
      "loss: 0.54082\n",
      "loss: 0.545962\n",
      "loss: 0.562599\n",
      "loss: 0.549904\n",
      "loss: 0.544392\n",
      "loss: 0.533628\n",
      "loss: 0.535238\n",
      "loss: 0.555755\n",
      "loss: 0.53791\n",
      "loss: 0.54805\n",
      "loss: 0.540646\n",
      "loss: 0.554536\n",
      "loss: 0.552407\n",
      "loss: 0.548966\n",
      "loss: 0.521315\n",
      "loss: 0.525812\n",
      "loss: 0.535961\n",
      "loss: 0.532173\n",
      "loss: 0.531217\n",
      "loss: 0.506108\n",
      "loss: 0.537566\n",
      "loss: 0.540569\n",
      "loss: 0.527848\n",
      "saving variables...\n"
     ]
    }
   ],
   "source": [
    "network.train(batches_in[:-1], batches_out[:-1], epochs=1, load_vars_from_disk=True,\n",
    "              save_vars_to_disk=True, variable_path='./sinusoidal')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[ 0.  1.  0. ...,  0.  0.  0.]\n",
      "  [ 0.  1.  0. ...,  1.  1.  1.]]\n",
      "\n",
      " [[ 0.  0.  0. ...,  1.  1.  1.]\n",
      "  [ 0.  0.  0. ...,  0.  0.  0.]]\n",
      "\n",
      " [[ 1.  1.  1. ...,  0.  0.  0.]\n",
      "  [ 0.  0.  0. ...,  0.  0.  0.]]\n",
      "\n",
      " ..., \n",
      " [[ 1.  1.  1. ...,  1.  0.  0.]\n",
      "  [ 0.  0.  0. ...,  0.  1.  1.]]\n",
      "\n",
      " [[ 0.  0.  0. ...,  1.  1.  1.]\n",
      "  [ 0.  0.  0. ...,  1.  0.  1.]]\n",
      "\n",
      " [[ 0.  0.  0. ...,  1.  1.  1.]\n",
      "  [ 0.  0.  0. ...,  0.  0.  0.]]]\n"
     ]
    }
   ],
   "source": [
    "boundaries = network.predict_boundaries(batches_in[-1])\n",
    "print(boundaries)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "predictions = network.predict(batches_in[-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\njabN+P+Zywc6jlHBZAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7da8937f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_indicators(batches_out[-1][0], predictions[0], indicators=boundaries[0]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Text classificaiton example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "tf.reset_default_graph()\n",
    "network = HMLSTMNetwork(output_size=27, input_size=27,\n",
    "                        embed_size=2048, out_hidden_size=1024,\n",
    "                        hidden_state_sizes=1024, \n",
    "                        task='classification')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "batches_in, batches_out = prepare_inputs(batch_size=2rt, truncate_len=1000, step_size=1000,\n",
    "                                         text_path='text8.txt', num_batches=3000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "start = 0\n",
    "end = 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "while end < len(batches_in):\n",
    "    network.train(batches_in[start:end], batches_out[start:end], save_vars_to_disk=True, \n",
    "                  load_vars_from_disk=True, variable_path='./text8', epochs=1)\n",
    "    start = end\n",
    "    end += 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "batch = -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "000000000000000000000000000000000000001111111111011011011000\n",
      "000000000000000000000000000000000000001011000000000000000000\n",
      "000000000000000000000000000000000000001000000000000000000000\n",
      "aox tight tonn  m aet vies tonfreet ahen teraar tesoner tnii\n",
      "six eight johnson notified congress that he had removed edwi\n",
      "\n",
      "000000000000000000000000000000000000000000000000000000000111\n",
      "000000000000000000000000000000000000000000000000000000000101\n",
      "000000000000000000000000000000000000000000000000000000000100\n",
      "ngt atgin al aorhesiry af ths tld tis aepoantag tis ts the c\n",
      "n stanton as secretary of war and was replacing him in the i\n",
      "\n",
      "111111111011011000000000000000000000000111111111101111111111\n",
      "100000000000000000000000000000000000000101100010110101010101\n",
      "000000000000000000000000000000000000000100000010000000000000\n",
      "n or aatith tleocile aoner l aeng  enaheu n ahes aaeuonid th\n",
      "nterim with adjutant general lorenzo thomas this violated th\n",
      "\n",
      "111011111110110110110000000000000000000000000000000000000000\n",
      "101100000000000000000000000000000000000000000000000000000000\n",
      "100000000000000000000000000000000000000000000000000000000000\n",
      "e chreee tf tn oca altiolceneaneltid ty tonfrest af toteh ah\n",
      "e tenure of office act a law enacted by congress on march tw\n",
      "\n",
      "011111111101111011000000000000000000000000000000000000000000\n",
      "101000000000000000000000000000000000000000000000000000000000\n",
      "100000000000000000000000000000000000000000000000000000000000\n",
      "o tne tight tox teven tfer tonn  m atterint eciaic l y aefpn\n",
      "o one eight six seven over johnson s veto specifically desig\n",
      "\n",
      "000000000000000000000000000000000000000000001110111111101101\n",
      "000000000000000000000000000000000000000000001011000000000000\n",
      "000000000000000000000000000000000000000000001000000000000000\n",
      "nes th troportiotate n aonn  m aav tarins the clhiooannsng t\n",
      "ned to protect stanton johnson had vetoed the act claiming i\n",
      "\n",
      "101100000000000111011111111101111111011011011000000000000000\n",
      "000000000000001010110000010110000000000000000000000000000000\n",
      "000000000000001000100000010000000000000000000000000000000000\n",
      "n tis asiers ioirion l ahe clhiotrr tner  arrpinsaiw  ng tnd\n",
      "t was unconstitutional the act said every person holding any\n",
      "\n",
      "000000000000000000000000000000000000000000011111101101111011\n",
      "000000000000000000000000000000000000000000011101000000000001\n",
      "000000000000000000000000000000000000000000010000000000000001\n",
      " aotityaf oca ah tiich aeraer aetn tnoornt d ay tld tith the\n",
      " civil office to which he has been appointed by and with the\n",
      "\n",
      "111111111110110110000000011111111111101101100000000000000000\n",
      "011000000000000000000000010110000000000000000000000000000000\n",
      "000000000000000000000000010000000000000000000000000000000000\n",
      " cleine old tonfist tf the covelida en  ae txerriy  th tim  \n",
      " advice and consent of the senate shall be entitled to hold \n",
      "\n",
      "000000000000000000000000000000000000000000000000000000000000\n",
      "000000000000000000000000000000000000000000000000000000000000\n",
      "000000000000000000000000000000000000000000000000000000000000\n",
      "tobh af oca asiivyantobhes  n aoer  aese ae n ts tine tetees\n",
      "such office until a successor shall have been in like manner\n",
      "\n",
      "000000000111111011111101100000001110111111101111111111110110\n",
      "000000000111010000000000000000001011000000000010110000000000\n",
      "000000000100000000000000000000001000000000000010000000000000\n",
      " anoornt d and tiri auanisics theseteponedg the crosident tt\n",
      " appointed and duly qualified thus removing the president s \n",
      "\n",
      "110110000000000000000000000000000000000000000000000000000000\n",
      "000000000000000000000000000000000000000000000000000000000000\n",
      "000000000000000000000000000000000000000000000000000000000000\n",
      "trosedus asiysenid toler th teponeltld an tig toreng iaotbor\n",
      "previous unlimited power to remove any of his cabinet member\n",
      "\n",
      "000000000000000000000000000111111111111110110000000000000000\n",
      "000000000000000000000000000101000000000000000000000000000000\n",
      "000000000000000000000000000100000000000000000000000000000000\n",
      "  an aatl aear  ainur tn the core aott  aatsivid ttati  an t\n",
      "s at will years later in the case myers v united states in o\n",
      "\n",
      "000000000000000000000000000000000000000000111011111110110110\n",
      "000000000000000000000000000000000000000000101100000000000000\n",
      "000000000000000000000000000000000000000000100000000000000000\n",
      "ne tine two t x the cobposenaanr iteca  then ttbh aene aire \n",
      "ne nine two six the supreme court ruled that such laws were \n",
      "\n",
      "110000000000000011101111111110111111101101101100000000000000\n",
      "000000000000000101011000001011000000000000000000000000000000\n",
      "000000000000000100010000001000000000000000000000000000000000\n",
      "an  rn tsiems ioirion l ahe covelidald tewre aiear s tn o te\n",
      "indeed unconstitutional the senate and house entered into ho\n",
      "\n",
      "000000000001110111110111111111011111101111111000000000000000\n",
      "000000000001011000001100111010101101010100000000000000000000\n",
      "000000000001000000001000100000000000000000000000000000000000\n",
      "mhtisonidaheu ntantorslid ah tolerts o the cisean oca aou ti\n",
      "t debate thomas attempted to move into the war office for wh\n",
      "\n",
      "0000000000000000000000000000001111111011\n",
      "0000000000000000000000000000001100101100\n",
      "0000000000000000000000000000001000100000\n",
      "ich atate n aav then n aneie  d theee ti\n",
      "ich stanton had thomas arrested three da\n",
      "\n"
     ]
    }
   ],
   "source": [
    "truth = get_text(batches_out[batch][0])\n",
    "predictions = network.predict(batches_in[batch], variable_path='./text8')\n",
    "boundaries = network.predict_boundaries(batches_in[batch], variable_path='./text8')\n",
    "viz_char_boundaries(truth, get_text(predictions[0]), indicators=boundaries[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
